Modern computing devices have become ubiquitous tools for personal, business, and social uses. As such, many modern computing devices are capable of connecting to various data networks, including the Internet and corporate intranets, to retrieve and receive data communications over such networks. Oftentimes, a computing device connected to one network needs to communicate with a computing device connected on a different network.
Software-defined networking (SDN) is a networking architecture in which decisions regarding how network traffic is to be processed and the devices or components that actually process the network traffic are decoupled into separate planes (i.e., the control plane and the data plane). In SDN environments, a centralized SDN controller is used to make forwarding decisions for network traffic instead of a network device such as, for example, a network switch. Typically, the forwarding decisions are communicated to a network device operating in the SDN environment, which in turn forwards network packets associated with the network traffic to the next destination based on the forwarding decisions made by the SDN controller. SDN controllers, however, often lack the ability to make fine-grained forwarding decisions for network traffic. Specifically, typical SDN controllers make forwarding decisions on a system level rather than on a device architecture level. That is, typical SDN controllers are not able to make forwarding decisions based on the individual components and/or a group of components of a destination computing device most optimal to receive and process specific types of network traffic.